/*
 * image.h
 *
 *  Created on: 2024骞�3鏈�27鏃�
 *      Author: 86152
 */
#include "zf_common_headfile.h"

#ifndef IMAGE_H_
#define IMAGE_H_

//颜色定义  因为有先例，连颜色都改不来，我直接放这了
#define uesr_RED     0XF800    //红色
#define uesr_GREEN   0X07E0    //绿色
#define uesr_BLUE    0X001F    //蓝色




//宏定义
#define image_h 60 //图像高度
#define image_w 80 //图像宽度

#define white_pixel 255
#define black_pixel 0

#define bin_jump_num    1 //跳过的点数
#define border_max  image_w-2 //边界最大值
#define border_min  1   //边界最小值

#define USE_num image_h*3   //定义找点的数组成员个数按理说300个点能放下，但是有些特殊情况确实难顶，多定义了一点

extern uint8 original_image[image_h][image_w];
extern uint8 bin_image[image_h][image_w]; //图像数组

extern uint16 points_l_x[(uint16)USE_num];      //左边线x轴坐标
extern uint16 points_l_y[(uint16)USE_num];      //左边线y轴坐标
extern uint16 points_r_x[(uint16)USE_num];      //右边线x轴坐标
extern uint16 points_r_y[(uint16)USE_num];      //右边线y轴坐标

extern uint8 l_border[image_h]; //左线数组
extern uint8 r_border[image_h]; //右线数组
extern uint8 center_line[image_h];

extern uint16 data_stastics_l;
extern uint16 data_stastics_r;
void Get_image(uint8(*mt9v03x_image)[image_w]);

void Separation_coordinate(void);

void image_process(void); //直接在中断或循环里调用此程序就可以循环执行了

void image_calculat_centre(void);

void image_display(void);

void cross_fill(uint8(*image)[image_w], uint8 *l_border, uint8 *r_border, uint16 total_num_l, uint16 total_num_r,
                                        uint16 *dir_l, uint16 *dir_r, uint16(*points_l)[2], uint16(*points_r)[2]);

#endif /* IMAGE_H_ */
